/********************************************************************************
 *      Copyright:  (C) 2019 Wu Yujun<540726307@qq.com>
 *                  All rights reserved.
 *
 *       Filename:  create_thread.h
 *    Description:  This head file for create_thread.c
 *
 *        Version:  1.0.0(2019年07月08日)
 *         Author:  Wu Yujun <540726307@qq.com>
 *      ChangeLog:  1, Release initial version on "2019年07月08日 18时11分55秒"
 *                 
 ********************************************************************************/
#ifndef     _CREAT_THREAD_H_
#define     _CREAT_THREAD_H_


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <pthread.h>

typedef void *(THREAD_BODY) (void *thread_arg);
#define STACK_SIZE          128*1024


/*      PPP拨号上网线程      */
void *ppp_thread(void *ctx) ;
/*      发送短信线程        */
void *sendmess_thread(void *ctx) ;
/*      socket通信接收命令线程      */
void *socket_thread(void *ctx) ;


/*********************************************************************
 *  描述：
 *      创建gsmd程序需要的线程，几个线程通过传进去的参数进行线程间通信
 *  返回值：
 *     成功返回0，失败返回负数
 *******************************************************************/
int gprsd_creat_thread(pthread_t * ppp_id, THREAD_BODY * ppp_thread,
        pthread_t *sendmess_id, THREAD_BODY * sendmess_thread,
        pthread_t *socket_id, THREAD_BODY * socket_thread,
        void *thread_arg) ;


/**********************************************************************
 * 描述：创建线程
 *   
 * 参数：
 *      pthread_t *thread_id指向类型为pthread_t类型的指针，传参传地址用于返回tid
 *      thread_wrokbody是个函数指针，传入函数地址
 *      thread_arg是传入thread_wrokbody线程处理函数的参数
 * 
 * 返回值：
 *      成功返回0，失败返回-1；
 *********************************************************************/
int create_pthread(pthread_t * thread_id, THREAD_BODY * thread_workbody, void *thread_arg) ;

#endif
